package org.wicket.jbpm.engine.workflow;

import java.io.InputStream;
import java.util.List;

public interface WorkflowService {

    //
    // Workflow Definition Management
    //

    /**
     * Deploy a Workflow Definition 
     * 
     * @param  engineId  the bpm engine id
     * @param  workflowDefinition  the workflow definition
     * @param  mimetype  the mimetype of the workflow definition
     * @return  workflow deployment descriptor
     */
	public WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype);

    /**
     * Deploy a Workflow Definition
     * 
     * Note: The specified content object must be of type bpm:workflowdefinition.
     *       This type describes for which BPM engine the definition is appropriate. 
     * 
     * @param workflowDefinition  the content object containing the definition
     * @return  workflow deployment descriptor
     */
    //public WorkflowDeployment deployDefinition(NodeRef workflowDefinition);
	
	
    /**
     * Gets latest deployed Workflow Definitions
     * 
     * @return  the latest deployed workflow definitions
     */	
    public List<WorkflowDefinition> getDefinitions();	
}
